package com.itheima.health.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.health.dao.CheckItemDao;
import com.itheima.health.entity.PageResult;
import com.itheima.health.entity.QueryPageBean;
import com.itheima.health.pojo.CheckItem;
import com.itheima.health.service.CheckItemService;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

@DubboService
@Slf4j
public class CheckItemServiceImpl implements CheckItemService {

    @Autowired
    private CheckItemDao checkItemDao;

    /**
     * 检查项-登录分页查询
     * @param queryPageBean
     * @return
     */
    @Override
    public PageResult findPage(QueryPageBean queryPageBean) {
        log.info("[检查项---分页查询]data: {}", queryPageBean);
        //使用pageHelper完成分页查询
        PageHelper.startPage(queryPageBean.getCurrentPage(), queryPageBean.getPageSize());
        //2.获取查询条件然后判断
        String queryString = queryPageBean.getQueryString();
        //查询条件
        Example example = new Example(CheckItem.class);
        Example.Criteria criteria = example.createCriteria();
        if (!StringUtils.isEmpty(queryString)) {
            //此处注意需要手动拼接前后 百分号 不会自动拼接
            criteria.orLike("code", "%" + queryString + "%");
            criteria.orLike("name", "%" + queryString + "%");
        }
        //使用插件强制转换
        Page<CheckItem> page = (Page<CheckItem>) checkItemDao.selectByExample(example);
        List<CheckItem> checkItemList = page.getResult(); //查询结果
        long total = page.getTotal(); //总记录数
        return new PageResult(total, checkItemList);
    }

    /**
     * 检查项-添加查询
     * @param checkItem
     */
    @Override
    public void add(CheckItem checkItem) {
        log.info("[检查项---添加查询]data: {}", checkItem);
        checkItemDao.insertSelective(checkItem);

    }

    /**
     * 检查项-删除操作
     * @param id
     */
    @Override
    public void delete(Integer id) {
        log.info("[检查项---删除检查项]data: {}", id);
        checkItemDao.deleteByPrimaryKey(id);
    }

    /**
     * 检查项--修改操作
     * @param checkItem
     */
    @Override
    public void edit(CheckItem checkItem) {
        log.info("[检查项-根据id修改数据]data: {}", checkItem);
        checkItemDao.updateByPrimaryKeySelective(checkItem);
    }

    /**
     * 检查项--根据id查询检查项目
     * @param id
     * @return
     */
    @Override
    public CheckItem findById(Integer id) {
        log.info("[检查项---根据id查询检查项]data: {}", id);
        return checkItemDao.selectByPrimaryKey(id);
    }
    /**
     * @Author: liangWeiQUQ
     * @Date: 14:58 2021/2/27
     * @Parms
     * @ReturnType:
     * @Description: 检查项--查询所有检查项
    */
    @Override
    public List<CheckItem> findAll() {
        return checkItemDao.selectAll();
    }

}
